home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tex / macros / source / contrib / supported / xypic / src / xyps-dvi.doc < prev    next >
Text File  |  1995-03-15  |  7KB  |  202 lines

  1. %% $Id: xyps-dvi.doc,v 2.10 1994/06/15 12:46:03 ross Exp $
  2. %%
  3. %% XY-pic ``dvips driver'' PostScript backend support.
  4. %% Copyright (c) 1993-1994    Ross Moore    <ross@mpce.mq.edu.au>
  5. %%
  6. %% This file is part of the XY-pic package for graphs and diagrams in TeX.
  7. %% See the companion README and INSTALL files for further information.
  8. %% Copyright (c) 1991-1994    Kristoffer H. Rose    <kris@diku.dk>
  9. %%
  10. %% The XY-pic package is free software; you can redistribute it and/or modify
  11. %% it under the terms of the GNU General Public License as published by the
  12. %% Free Software Foundation; either version 2 of the License, or (at your
  13. %% option) any later version.
  14. %%
  15. %% The XY-pic package is distributed in the hope that it will be useful, but
  16. %% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  17. %% or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  18. %% for more details.
  19. %%
  20. %% You should have received a copy of the GNU General Public License along
  21. %% with this package; if not, write to the Free Software Foundation, Inc.,
  22. %% 675 Mass Ave, Cambridge, MA 02139, USA.
  23. %%
  24. \ifx\xypsdviloaded\relax \message{not reloaded}\endinput \fi
  25. \let\xypsdviloaded=\relax \xycatcodes
  26.  
  27. \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  28.  
  29. This included file (version \stripRCS$Revision: 2.10 $) provides \XY-ps
  30. support for the dvips driver by Tomas Rokicki~\cite{dvips} (it has been
  31. tested with dvips version~5.55a).
  32.  
  33. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  34. \DOCHEADER
  35.  
  36. |dvips| has three kinds of |\special| which can be used.
  37.  
  38. The ``dictionary'' file need only be loaded once, at the beginning of the
  39. document.
  40.  
  41. \DOCMODE(
  42. \xydef@\dvips@@{\gdef\dvitype@{dvips }\dvimessage@
  43.  \global\let\PSspecial@=\dvipsSpecial@
  44.  \global\let\PSmacro@=\dvipsMacro@
  45.  \global\let\PSdict@=\dvipsDict@
  46.  \global\let\PSraw@=\dvipsRaw@
  47.  \global\let\PSinclude@=\dvipsInclude@
  48.  \global\let\xyPSobeylines@=\obeyDVIPSlines@
  49. % \gdef\xyDVIPSheader{\PSmessage{loading header: \xyPSdictname}%
  50. %  \expandafter\dvipsInclude@\expandafter{\xyPSdictname}}%
  51.  \ifUsePSdict@@
  52.   \gdef\firstPS@@{\firstPS@ \includePSmessage@ \includeXYPSdict@ \message{>}}%
  53.   \gdef\endXYdict@{\firstPS@}%
  54.  \else
  55.   \dvipsDict@{200 dict /XYdict exch def %
  56.    /xy{XYdict begin countdictstack /xylevel exch def %
  57.    xyopen xycolor stopped xyclose cleartomark end}def %
  58.    /xyc{{xysetcol}xy}def /xycc{{xychgcol}xy}def %
  59.    XYdict begin}%
  60.   \gdef\firstPS@@{\firstPS@ \XYdict@}%
  61.   \gdef\endXYdict@{\firstPS@\dvipsDict@{end}}\fi
  62.  \xyPSshapes@true
  63.  \firstPS@@
  64. }
  65.  
  66. \xywarnifdefined\obeyDVIPSlines@
  67. {\catcode`\^^M=\active
  68.  \gdef\obeyDVIPSlines@{\catcode`\^^M=\active \let^^M=\space }}
  69.  
  70. \xywarnifdefined\dvipsSpecial@
  71. \xywarnifdefined\dvipsMacro@
  72. \xywarnifdefined\dvipsDict@
  73. \xywarnifdefined\dvipsInclude@
  74. \xywarnifdefined\dvipsRaw@
  75. {\catcode`\"=11 \catcode`\!=11 \catcode`\:=11
  76.  \gdef\dvipsSpecial@#1{\firstPS@@\special{ps:: SDict begin #1 end}}%
  77.  \gdef\dvipsMacro@#1{\firstPS@@\special{" mark{#1}xy}}%
  78. % \gdef\dvipsMacro@#1{\firstPS@@\special{ps: mark{#1}xy}}%
  79.  \gdef\dvipsDict@#1{\firstPS@@\special{! mark{#1}stopped cleartomark}}%
  80.  \gdef\dvipsInclude@#1{\firstPS@@\special{header=#1}}%
  81.  \gdef\dvipsRaw@#1{\firstPS@@\special{ps: SDict begin #1 end}}%
  82. }
  83. \DOCMODE)
  84.  
  85. Do it now.
  86.  
  87. \DOCMODE(
  88.  \dvips@@
  89. \DOCMODE)
  90.  
  91. All the \PS\ definitions passed to |dvips| by reading the 
  92. dictionary file are stored in a \PS\ dictionary which it defines, 
  93. called |SDict|. This must be the current dictionary whenever an \XY-ps 
  94. command is to be executed. 
  95. This will be the case whenever the |\special{" |{\it commands}|}| or 
  96. |\special{! |{\it commands}|}| forms are used, but not when the
  97. |\special{ps:: |{\it commands}|}| form is used.
  98. Thus the |\dvipsSpecial@| macro includes code to open |SDict| and 
  99. close it when finished.
  100.  
  101. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  102.  
  103. The |currentpoint| is defined for the ``raw'' specials.
  104.  
  105. \DOCMODE(
  106. \xydef@\dvipsCurrpt@{%
  107.   \def\xyPScurrpt@@{\xyPSraw@{currentpoint /xyYpos exch def /xyXpos exch def}}}
  108. \DOCMODE)
  109.  
  110. The \PS\ operator called |normalscale| is provided by |dvips|.
  111. It establish the correct scale for drawing  using ``raw'' specials.
  112.  
  113. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  114.  
  115. \paragraph*{Line styles}\leavevmode
  116.  
  117. \DOCMODE(
  118. \xywithoption{line}{%
  119.  \xyinputorelse@{xyps-l.tex}{\xyerror@{Could not load xyps-l.tex}{}}}
  120. \xycatcodes
  121. \DOCMODE)
  122.  
  123. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  124.  
  125. \paragraph*{Rotations and Scaling}\leavevmode
  126.  
  127. It is necessary to know both the |currentpoint| and the coordinates
  128. |xyXpos| and |xyYpos| of the rotation center, in order to
  129. correctly rotate and scale text boxes.
  130.  
  131. \DOCMODE(
  132. \xydef@\dvipsRotScale@{%
  133.  \def\xyrot@start(##1){currentpoint xyXpos xyYpos 
  134.   2 copy translate 2 copy 6 2 roll 
  135.    ##1\space neg rotate 
  136.   3 -1 roll sub neg 3 1 roll sub exch moveto 
  137.   neg exch neg exch translate }%
  138.  \def\xyrot@end{}%
  139.  \def\xyscale@start(##1,##2){currentpoint xyXpos xyYpos 
  140.   2 copy translate 2 copy 6 2 roll 
  141.    ##1\space##2\space scale 
  142.   3 -1 roll sub neg 3 1 roll sub exch moveto 
  143.   neg exch neg exch translate }%
  144.  \def\xyscale@end{}}
  145. \DOCMODE)
  146.  
  147. \DOCMODE(
  148. \xywithoption{rotate}{%
  149.  \xyinputorelse@{xyps-r.tex}{\xyerror@{Could not load xyps-r.tex}{}}%
  150.   \dvipsCurrpt@ \dvipsRotScale@ }
  151. \xycatcodes
  152. \DOCMODE)
  153.  
  154. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  155.  
  156. \paragraph*{Colours}
  157. The following <shape> definitions allow the 68 colours known to |dvips| 
  158. to be used by name.
  159. This works with versions of |dvips| later than 5.490 
  160. (and perhaps some earlier versions), 
  161. provided the |color.pro| prolog file is available.
  162.  
  163. \DOCMODE(
  164. \xywithoption{color}{%
  165.  \xyinputorelse@{xyps-c.tex}{\xyerror@{Could not load xyps-c.tex}{}}}
  166. \xycatcodes
  167. \DOCMODE)
  168.  
  169. \DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  170.  
  171. \paragraph*{The end \& Log}\leavevmode
  172.  
  173. \DOCMODE(
  174. \xyendinput
  175.  
  176. % $Log: xyps-dvi.doc,v $
  177. % Revision 2.10  1994/06/15  12:46:03  ross
  178. % Second release 3beta.
  179. % Colour and line style saving works; label colouring bug fixed.
  180. %
  181. % Revision 2.10  1994/06/15  12:46:03  ross
  182. % Second release 3beta.
  183. % Colour and line style saving works; label colouring bug fixed.
  184. %
  185. % Revision 2.9  1994/06/09  14:38:56  ross
  186. % Release 3beta.
  187. % Includes support for special effects: Rotations, Scaling, Line-width, Colour.
  188. % Back-ends are separated into separate files.
  189. % More back-ends are supported, experimentally --- needs testing.
  190. %
  191. % NEW for version 2.9 by Ross Moore  1994/05/30.
  192. \DOCMODE)
  193.  
  194. \DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  195.  
  196. % Tell Emacs that this is a LaTeX document and how it is formatted:
  197. % Local Variables:
  198. % mode:latex
  199. % fill-column:77
  200. % fill-prefix:""
  201. % End:
  202.